package team.seekers.catering.controller.api;


import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import team.seekers.catering.common.enums.EatingWishEnum;
import team.seekers.catering.entity.params.add.UserAddPA;
import team.seekers.catering.entity.params.update.OfflineUserUpdatePA;
import team.seekers.catering.entity.params.update.UserUpdatePA;
import team.seekers.catering.common.result.R;
import team.seekers.catering.entity.vo.info.UserInfo;
import team.seekers.catering.service.UserService;

import javax.validation.Valid;

/**
 * 前端控制器
 *
 * @author hbc
 * @since 2021-04-26
 */
@Api(description = "用户相关")
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 渲染个人信息（/api/user/get）
     */
    @ApiOperation(value = "渲染个人信息")
    @GetMapping("/get")
    public R get() {
        UserInfo userInfo = userService.get();
        return R.success().data("info", userInfo);
    }

    /**
     * 修改个人信息（/api/user/update）
     */
    @ApiOperation(value = "修改个人信息")
    @PutMapping("/update")
    public R update(@Valid @RequestBody UserUpdatePA userUpdatePA) {
        userService.update(userUpdatePA);
        return R.success();
    }

    /**
     * 填写身体数据成为线下正式用户（/api/user/bindOffline）
     * @Author hbc
     */
    @PutMapping("/bindOffline")
    public R bindOffline(@RequestBody OfflineUserUpdatePA offlineUserUpdatePA) {
        if(EatingWishEnum.getByType(offlineUserUpdatePA.getWish()) == null){
            return R.fail("系统异常，请联系客服");
        }
        userService.bindOffline(offlineUserUpdatePA);
        return R.success();
    }

    /**
     * 填写位置数据成为线上正式用户（/api/user/bindOnline）
     * @Author hbc
     */
    @PutMapping("/bindOnline")
    public R bindOnline(@RequestBody OfflineUserUpdatePA offlineUserUpdatePA) {
        userService.bindOnline(offlineUserUpdatePA);
        return R.success();
    }

}

